package com.culturalCenter.dataCenter.Utils;

public class CharAscii {

    /**
     * 方法一：将char 强制转换为byte
     *
     * @param ch
     *
     * @return
     */
    public static byte charToByteAscii(char ch) {
        return (byte) ch;
    }

    /**
     * 方法二：将char直接转化为int，其值就是字符的ascii
     *
     * @param ch
     *
     * @return
     */
    public static byte charToByteAscii2(char ch) {
        return (byte) ch;
    }

    /**
     * 同理，ascii转换为char 直接int强制转换为char
     *
     * @param ascii
     *
     * @return
     */
    public static char byteAsciiToChar(int ascii) {
        return (char) ascii;
    }

    /**
     * 求出字符串的ASCII值和
     * 注意，如果有中文的话，会把一个汉字用两个byte来表示，其值是负数
     */
    public static int SumStrAscii(String str) {
        byte[] bytestr = str.getBytes();
        int sum = 0;
        for (byte b : bytestr) {
            sum += b;
        }
        return sum;
    }

    public static void change(char c) {
        // 如果输入的是大写，+32即可得到小写
        if (c >= 'A' && c <= 'Z') {
            c += 32;
        } else if (c >= 'a' && c <= 'z') {    // 如果输入的是小写，-32即可得大小写
            c -= 32;
        }
    }

    /**
     * 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F）的解决方案 😁
     *
     * @param content
     *
     * @return
     */
    public static String removeFourChar(String content) {
        byte[] conbyte = content.getBytes();
        for (int i = 0; i < conbyte.length; i++) {
            if ((conbyte[i] & 0xF8) == 0xF0) {
                for (int j = 0; j < 4; j++) {
                    conbyte[i + j] = 0x30;
                }
                i += 3;
            }
        }
        content = new String(conbyte);
        return content.replaceAll("0000", "");
    }

}
